A curated list of resources on
        HashiCorp’s Terraform.
        
        Your
        contributions
        are welcome!
      
    
    
      Terraform enables you to safely and predictably create, change, and
      improve production infrastructure. It is an open source tool that codifies
      APIs into declarative configuration files that can be shared amongst team
      members, treated as code, edited, reviewed, and versioned.
    
    
      Sponsored by
      Scalr - Terraform Automation & Collaboration Software
    
    
      
    
    Contents
    
    Legend
    
      - Not compatible with terraform >= 0.12 :ghost:
 
      - Abandoned :skull:
 
      - Monetized :heavy_dollar_sign:
 
    
    Official Resources
    
    
    
    Books
    
    Tutorials and Blog Posts
    Beginner Guides
    
    Writing Custom Providers
    
    How-To
    
    
      Multi-Environment Configuration
    
    
    Azure
    
    AWS
    
      - 
        AWS Lambda the Terraform Way
        - Understand AWS Lambda in-depth, beyond executing functions, using
        Terraform. Also includes guides for integration with S3, API Gateway,
        DynamoDB, Kinesis, SQS.
      
 
    
    Miscellaneous
    
    
    
      For more Community Modules not listed here please see the
      Terraform Module Registry.
    
    
      - 
        rancher-terraform-digitalocean
        - Rancher server on digitalocean.
      
 
      - 
        segmentio/stack -
        Configures production infrastructure with AWS, Docker, and ECS.
      
 
      - 
        terraform-aws-alb
        - Created Application load-balancer on AWS (verified module).
      
 
      - 
        terraform-aws-atlantis
        - Creates Terraform configurations for running
        Atlantis on AWS Fargate. Github,
        Gitlab and BitBucket are supported.
      
 
      - 
        terraform-aws-autoscaling
        - Creates Auto-Scaling Groups and Launch Configurations (verified
        module).
      
 
      - 
        terraform-aws-ecr
        - Manages Docker container registries on AWS ECR.
      
 
      - 
        terraform-aws-efs
        - Defines an EFS Filesystem.
      
 
      - 
        terraform-aws-eks
        - Creates Elastic Kubernetes Service on AWS (very popular module).
      
 
      - 
        terraform-aws-elb
        - Created Elastic load-balancer on AWS (verified module).
      
 
      - 
        terraform-aws-jenkins-ha-agents
        - EC2 Based Jenkins deployment with HA (spot) agents. Runs on EFS for
        immutability. Fully customizeable, with sensible defaults.
      
 
      - 
        terraform-aws-jenkins
        - Build a Docker image with Jenkins, saves it to an ECR repo, and
        deploys it to Elastic Beanstalk running a Docker stack.
      
 
      - 
        terraform-aws-key-pair
        - Automatically Generate SSH Key Pairs (Public/Private Keys).
      
 
      - 
        terraform-aws-lambda-auto-package
        - A terraform module to define a lambda function which source files are
        automatically built and packaged for lambda deployment.
      
 
      - 
        terraform-aws-modules
        - Collection of Terraform AWS modules supported by the community
        (includes official AWS modules).
      
 
      - 
        terraform-aws-postgresql-rds
        - Creates PostgreSQL on RDS.
      
 
      - 
        terraform-aws-rds
        - Creates RDS resources on AWS (verified module).
      
 
      - 
        terraform-aws-secure-baseline
        - Set up your AWS account with the secure baseline configuration based
        on CIS Amazon Web Services Foundations.
      
 
      - 
        terraform-aws-security-group
        - Creates EC2-VPC security groups on AWS (verified module).
      
 
      - 
        terraform-aws-ssh-bastion-service
        - Terraform plan to deploy ssh bastion as a stateless service on AWS.
      
 
      - 
        terraform-aws-lambda
        - Terraform module, which builds dependencies and packages, and also
        creates AWS Lambda resources in countless combinations.
      
 
      - 
        terraform-aws-vpc
        - Creates VPC resources on AWS (verified and very popular module).
      
 
      - 
        terraform-azurerm-aks
        - Create AKS resources on Azure.
      
 
      - 
        terraform-azurerm-iis
        - Install IIS Server on Azure VM instance.
      
 
      - 
        terraform-azurerm-mysql
        - Create MySql Database on Azure.
      
 
      - 
        terraform-azurerm-redis
        - Create Redis on Azure.
      
 
      - 
        terraform-azurerm-sqlserver
        - Create SQl Server Database on Azure.
      
 
      - 
        terraform-cloudflare-maintenance
        - Module to create a Maintenance Page using Cloudflare Workers.
      
 
      - 
        terraform-digitalocean-droplet
        - Terraform module for managing DigitalOcean Droplets and related
        resources.
      
 
      - 
        terraform-ecs-jenkins
        - Provisions Jenkins on AWS ECS using Terraform.
      
 
      - 
        terraform-google-project-factory
        - Opinionated Google Cloud Platform project creation and configuration
        with Shared VPC, IAM, APIs, etc.
      
 
      - 
        terraform-linode-k8s
        - Installs Kubernetes on Linode Instances.
      
 
      - 
        terraform-static-website-s3-cloudfront
        - Creates static websites on AWS S3 & Cloudfront based on variables.
      
 
      - 
        tf_aws_availability_zones_cfn
        - Gets availability zones for your AWS region/account from
        Cloudformation.
      
 
      - 
        tf_aws_bastion_s3_keys
        - Creates bastion hosts on AWS EC2.
      
 
      - 
        tf_aws_coreos_ami
        - Easy way to lookup CoreOS AMIs with terraform.
      
 
      - 
        tf_aws_nat
        - NAT instances for AWS.
      
 
    
    Private Module Registries
    
      - 
        anthology -
        Private Terraform registry implementation as an alternative to the
        official registry.
      
 
      - 
        citizen - Private
        Terraform Module Registry
      
 
      - 
        terraform-simple-registry
        - Simple implementation of the Terraform registry protocols.
      
 
    
    Providers
    
    Testing
    
      - 
        kitchen-terraform
        - Provides a set of Test Kitchen plugins which enable a system to use
        Test Kitchen to converge a Terraform configuration and verify the
        resulting Terraform state with InSpec controls.
      
 
      - 
        rspec-terraform
        - RSpec tests for your Terraform modules.
      
 
      - 
        terraform-compliance
        - BDD Testing for Terraform Files.
      
 
      - 
        terraform_validate
        - Assists in the enforcement of user-defined standards in Terraform.
      
 
      - 
        terratest -
        Terratest is a Go library that makes it easier to write automated tests
        for your infrastructure code.
      
 
      - 
        clarity - A
        declarative test framework for Terraform for unit testing.
      
 
    
    
    
      - 
        AirIAM - AirIAM is
        a tool for AWS IAM to least privilege Terraform execution framework.
      
 
      - 
        astro - Astro is a tool for
        managing multiple Terraform executions as a single command. :ghost:
      
 
      - 
        atlantis - Unified
        workflow for collaborating on Terraform through GitHub.
      
 
      - 
        blast radius -
        Interactive visualizations of Terraform dependency graphs. :skull:
      
 
      - 
        Checkov -
        Terraform static analysis tool for terraform>=0.12
      
 
      - 
        Cloudrail -
        Terraform and Live Cloud context-based analysis tool for
        terraform>=0.12 :heavy_dollar_sign:
      
 
      - 
        flora - Terraform
        version manager.
      
 
      - 
        fogg - A tool for
        eliminating toil in managing terraform repositories.
      
 
      - 
        former2 - Generate
        terraform configuration from your existing resources within your AWS
        account.
      
 
      - 
        gaia - A web application
        to import and run your Terraform modules.
      
 
      - 
        hcledit - A command
        line editor for HCL.
      
 
      - 
        iam-policy-json-to-terraform
        - Small tool to convert an IAM Policy in JSON format into a Terraform
        aws_iam_policy_document
      
 
      - 
        k2tf - Kubernetes YAML to
        Terraform HCL converter.
      
 
      - 
        KICS - Scans IaC
        projects for security vulnerabilities, compliance issues, and
        infrastructure misconfiguration. Currently working with Terraform
        projects, Kubernetes manifests, Dockerfiles, AWS CloudFormation
        Templates, and Ansible playbooks.
      
 
      - 
        Infracost - Cloud
        cost estimates for Terraform in your CLI and pull requests.
      
 
      - 
        json2hcl - Convert JSON to
        HCL and vice versa. :ghost:
      
 
      - 
        modules.tf - Infrastructure as code
        generator - from visual diagrams created with
        Cloudcraft.co to Terraform.
        Source code.
      
 
      - 
        para - The missing
        3rd-party plugin manager and a “swiss army knife” for
        Terraform/Terragrunt - just 1 tool to facilitate all workflows. :skull:
      
 
      - 
        pre-commit-terraform
        - pre-commit git hooks to take care of Terraform configurations
        (auto-format, validate, update docs).
      
 
      - 
        pretf - drop-in
        Terraform wrapper that generates Terraform configuration with Python.
        See
        pretf documentation
      
 
      - 
        python-terrafile
        - Systematically manage external modules from Github for use in
        Terraform.
      
 
      - 
        prettyplan -
        Prettyplan ([available online here]
        (https://chrislewisdev.github.io/prettyplan/)) is a small tool to help
        you view large Terraform plans with ease. :ghost:
      
 
      - 
        regula - Evaluates
        Terraform infrastructure-as-code for potential AWS, Azure, and Google
        Cloud security misconfigurations and compliance violations prior to
        deployment.
      
 
      - 
        ruby-terraform
        - Simple Ruby wrapper for invoking terraform commands.
      
 
      - 
        scenery - Another
        Terraform plan output prettifier. :ghost:
      
 
      - 
        scratchrelaxtv
        - Simple Python tool to help with module development - extract vars from
        
main.tf to generate variables.tf and make
        module usage stub from variables.tf.
       
      - 
        serverless.tf - Doing serverless with Terraform
        - serverless.tf is an opinionated open-source framework for developing,
        building, deploying, and securing serverless applications and
        infrastructures on AWS using Terraform.
        Read more.
      
 
      - 
        tads-boilerplate
        - The power of Ansible and Terraform + the simplicity of Docker Swarm =
        Infrastructure as Code and DevOps best practices.
      
 
      - 
        tau - Tau is a thin wrapper
        on top of terraform to manage multiple deployments, dependencies and
        secrets.
      
 
      - 
        terraboard - Web
        dashboard to inspect Terraform States.
      
 
      - 
        terraboot - DSL to
        generate a terraform configuration and run it.
      
 
      - 
        TerraDepot
        Terraform state repository, based on the default http remote backend.
        Allows the central administration of tfstates on AWS S3.
      
 
      - 
        terrafile -
        Systematically manage external modules from Github for use in Terraform
        (written in Go).
      
 
      - 
        terrafile -
        Systematically manage external modules from Github for use in Terraform
        (written in Ruby).
      
 
      - 
        terraform-bundle
        - Easily builds bundles containing a Terraform binary as well as
        provider binaries. Useful for CI and air-gapped Terraform Enterprise.
      
 
      - 
        terraform-cdk -
        CDK (Cloud Development Kit) for Terraform allows developers to use
        familiar programming languages to define cloud infrastructure and
        provision it through HashiCorp Terraform.
      
 
      - 
        terraform-docs
        - Quick utility to generate docs from terraform modules.
      
 
      - 
        terraform-graph-beautifier
        - Command line tool allowing to convert the barely usable output of the
        terraform graph command to something more meaningful and explanatory.
      
 
      - 
        terraform-landscape
        - (only 0.11 and earlier) Improve Terraform’s plan output to be
        easier to read and understand.
      
 
      - 
        terraform-operator
        - A Kubernetes CRD to handle Terraform operations.
      
 
      - 
        terraform-plan-parser
        - Command line utility and JavaScript API for parsing stdout from
        
terraform plan and converting it to JSON. :ghost:
       
      - 
        terraform-provisioner
        - Tool for managing multiple provisions of the same Terraform scripts.
      
 
      - 
        terraform-rake-tasks
        - Shared Rake tasks for managing terraform plans.
      
 
      - 
        terraform.py -
        Ansible dynamic inventory script for parsing Terraform state files.
      
 
      - 
        terraformer
        - CLI tool to generate terraform files from existing infrastructure.
        Infrastructure to Code. Supported many providers.
      
 
      - 
        terraforming -
        Export existing AWS resources to Terraform style (tf, tfstate). Similar
        to 
terraformer.
       
      - 
        terraformize -
        ApplyTerraform modules via a simple REST API endpoint.
      
 
      - 
        Terraform-Visual
        A simple but powerful tool to visualize Terraform plan.
      
 
      - 
        terragrunt -
        Terragrunt is a thin wrapper for Terraform that provides extra tools for
        keeping your Terraform configurations DRY, working with multiple
        Terraform modules, and managing remote state.
      
 
      - 
        terrahelp - Command
        line utility aimed at providing supplementary functionality which can
        sometimes prove useful when working with Terraform.
      
 
      - 
        terrahub -
        TerraHub is terraform automation and orchestration tool. Seamlessly
        integrated into console.terrahub.io, enterprise friendly GUI to show
        realtime terraform executions, as well as auditing and reporting
        capabilities for historical terraform runs. :heavy_dollar_sign:
      
 
      - 
        terrascan -
        Collection of security and best practice test for static code analysis
        of terraform templates
      
 
      - 
        terraspace - The Terraform
        Framework
      
 
      - 
        terratag - Terratag is a
        CLI tool that enables users of Terraform to automatically create and
        maintain tags across their entire set of AWS, Azure, and GCP resources.
      
 
      - 
        tf-init-booster
        A Pre-terraform routine that speedups terraform modules download for
        bulky blueprints.
      
 
      - 
        tfsec - Terraform static
        analysis tool that supports terraform <0.12 & >=0.12 &
        directly integrates with HCL parser for better results.
      
 
      - 
        tfenv - Terraform version
        manager inspired by rbenv.
      
 
      - 
        tfjson - Utility to
        read in a Terraform plan file and dump it out in JSON. :skull:
      
 
      - 
        tflint - Terraform
        linter for detecting errors that can not be detected by
        
terraform plan
       
      - 
        tfmask - Terraform
        utility to mask select output from 
terraform plan and
        terraform apply
       
      - 
        tfmigrate - A
        Terraform state migration tool for GitOps.
      
 
      - 
        tfscaffold -
        Framework for controlling multi-environment multi-component
        terraform-managed AWS infrastructure.
      
 
      - 
        tfschema - Schema
        inspector for Terraform providers.
      
 
      - 
        tfupdate - Update
        version constraints in your Terraform configurations.
      
 
      - 
        tfwrapper - Rubygem
        providing rake tasks for running Hashicorp Terraform sanely.
      
 
      - 
        tgf - Terragrunt frontend for
        executing Terragrunt/Terraform through Docker.
      
 
      - 
        xterrafile
        Systematically manage external modules from the module registry, git or
        local directories for use in Terraform (written in Go).
      
 
      - 
        yor - Automatically
        tag and trace infrastructure as code frameworks (Terraform,
        Cloudformation and Serverless) .
      
 
    
    Libraries
    
    Boilerplates
    
      - 
        Terraform Generator
        - Scaffolding for a new terraform module or project with support of test
        frameworks (terratest and kitchen-terraform)
      
 
    
    
    
    Videos
    
    Editor Plugins
    
    License
    
      
    
    
      To the extent possible under law, Shuaib Yunus has waived all copyright
      and related or neighboring rights to this work.